<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>MiXiM: DeciderToPhyInterface Class Reference</title>

<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>


</head>
<body>
<div id="top"><!-- do not remove this div! -->


<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  
  
  <td style="padding-left: 0.5em;">
   <div id="projectname">MiXiM
   &#160;<span id="projectnumber">2.3</span>
   </div>
   
  </td>
  
  
  
 </tr>
 </tbody>
</table>
</div>

<!-- Generated by Doxygen 1.7.5.1 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li><a href="dirs.html"><span>Directories</span></a></li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="inherits.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
</div>
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
  initNavTree('a00079.html','');
</script>
<div id="doc-content">
<div class="header">
  <div class="summary">
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a>  </div>
  <div class="headertitle">
<div class="title">DeciderToPhyInterface Class Reference<div class="ingroups"><a class="el" href="a00512.html">decider - decider modules</a></div></div>  </div>
</div>
<div class="contents">
<!-- doxytag: class="DeciderToPhyInterface" -->
<p>This class is the interface for a <a class="el" href="a00070.html" title="The basic Decider class.">Decider</a> to the <a class="el" href="a00029.html" title="The BasePhyLayer represents the physical layer of a nic.">BasePhyLayer</a>.  
 <a href="a00079.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="a00292_source.html">DeciderToPhyInterface.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for DeciderToPhyInterface:</div>
<div class="dyncontent">
<div class="center"><img src="a00717.png" border="0" usemap="#DeciderToPhyInterface_inherit__map" alt="Inheritance graph"/></div>
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>

<p><a href="a00718.html">List of all members.</a></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a150a9a4fc2b6a958fabf082ea7fbb510"></a><!-- doxytag: member="DeciderToPhyInterface::airframe_t" ref="a150a9a4fc2b6a958fabf082ea7fbb510" args="" -->
typedef MiximAirFrame&#160;</td><td class="memItemRight" valign="bottom"><b>airframe_t</b></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a77b2e121680f32d5882fdd8dd9bf2ca1"></a><!-- doxytag: member="DeciderToPhyInterface::airframe_ptr_t" ref="a77b2e121680f32d5882fdd8dd9bf2ca1" args="" -->
typedef airframe_t *&#160;</td><td class="memItemRight" valign="bottom"><b>airframe_ptr_t</b></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef std::list&lt; airframe_ptr_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00079.html#a13e15d0d80017e55821963b3b4a6cf55">AirFrameVector</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Type for container of AirFrames.  <a href="#a13e15d0d80017e55821963b3b4a6cf55"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a37995e7f41efc2f95b081653ca01b482"></a><!-- doxytag: member="DeciderToPhyInterface::ParameterMap" ref="a37995e7f41efc2f95b081653ca01b482" args="" -->
typedef std::map&lt; std::string, <br class="typebreak"/>
cMsgPar &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00079.html#a37995e7f41efc2f95b081653ca01b482">ParameterMap</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Used at initialization to pass the parameters to the <a class="el" href="a00009.html" title="Interface for the analogue models of the physical layer.">AnalogueModel</a> and <a class="el" href="a00070.html" title="The basic Decider class.">Decider</a>. <br/></td></tr>
<tr><td colspan="2"><h2><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00079.html#a304e09a4309820bc45450f8a5fcfcb34">getChannelInfo</a> (simtime_t_cref from, simtime_t_cref to, <a class="el" href="a00079.html#a13e15d0d80017e55821963b3b4a6cf55">AirFrameVector</a> &amp;out) const =0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Fills the passed AirFrameVector with all air frames that intersect with the time interval [from, to] with same channel number.  <a href="#a304e09a4309820bc45450f8a5fcfcb34"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="a00058.html">ConstMapping</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00079.html#a2c55926187883df5bc322c947d317534">getThermalNoise</a> (simtime_t_cref from, simtime_t_cref to)=0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a <a class="el" href="a00136.html" title="Represents a changeable mapping (mathematical function) from at least time to Argument::mapped_type.">Mapping</a> which defines the thermal noise in the passed time frame (in mW).  <a href="#a2c55926187883df5bc322c947d317534"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00079.html#a319e413b963f03ff218b0d0024fb66b9">sendControlMsgToMac</a> (cMessage *msg)=0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Called by the <a class="el" href="a00070.html" title="The basic Decider class.">Decider</a> to send a control message to the MACLayer.  <a href="#a319e413b963f03ff218b0d0024fb66b9"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00079.html#ad81919dcafb2d568303e9ed362dafd93">sendUp</a> (airframe_ptr_t packet, <a class="el" href="a00075.html">DeciderResult</a> *result)=0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Called to send an AirFrame with <a class="el" href="a00075.html" title="A class to represent the result of a processed packet (that is not noise) by the Decider.">DeciderResult</a> to the MACLayer.  <a href="#ad81919dcafb2d568303e9ed362dafd93"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afdcd74839d4a7c6ea34062c8e409220d"></a><!-- doxytag: member="DeciderToPhyInterface::getSimTime" ref="afdcd74839d4a7c6ea34062c8e409220d" args="() const =0" -->
virtual simtime_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00079.html#afdcd74839d4a7c6ea34062c8e409220d">getSimTime</a> () const =0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the current simulation time. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00079.html#af85151048dba05ec27e378000fd95403">cancelScheduledMessage</a> (cMessage *msg)=0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Tells the <a class="el" href="a00173.html" title="Provides initialisation for several AnalogueModels and Deciders from modules directory.">PhyLayer</a> to cancel a scheduled message (AirFrame or ControlMessage).  <a href="#af85151048dba05ec27e378000fd95403"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00079.html#a223fb24be9268abba32e90181fa248b9">rescheduleMessage</a> (cMessage *msg, simtime_t_cref t)=0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Tells the <a class="el" href="a00173.html" title="Provides initialisation for several AnalogueModels and Deciders from modules directory.">PhyLayer</a> to reschedule a message (AirFrame or ControlMessage).  <a href="#a223fb24be9268abba32e90181fa248b9"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00079.html#a1ee7d31b5bf0cda9e543ac91b3aaecc5">drawCurrent</a> (double amount, int activity)=0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables the <a class="el" href="a00070.html" title="The basic Decider class.">Decider</a> to draw Power from the phy layers power accounts.  <a href="#a1ee7d31b5bf0cda9e543ac91b3aaecc5"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00079.html#a9183eb9c635a185f18da631f2d2d9f1c">recordScalar</a> (const char *name, double value, const char *unit=NULL)=0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Utility method to enable a <a class="el" href="a00070.html" title="The basic Decider class.">Decider</a>, which isn't an OMNeT-module, to use the OMNeT-method 'recordScalar' with the help of and through its interface to <a class="el" href="a00029.html" title="The BasePhyLayer represents the physical layer of a nic.">BasePhyLayer</a>.  <a href="#a9183eb9c635a185f18da631f2d2d9f1c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5c8df09fc0711587b07e2ac5d8412554"></a><!-- doxytag: member="DeciderToPhyInterface::getCurrentRadioChannel" ref="a5c8df09fc0711587b07e2ac5d8412554" args="() const =0" -->
virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00079.html#a5c8df09fc0711587b07e2ac5d8412554">getCurrentRadioChannel</a> () const =0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the channel currently used by the radio. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae6cc727e6364c8a55fb735d18f93faa8"></a><!-- doxytag: member="DeciderToPhyInterface::getNbRadioChannels" ref="ae6cc727e6364c8a55fb735d18f93faa8" args="() const =0" -->
virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00079.html#ae6cc727e6364c8a55fb735d18f93faa8">getNbRadioChannels</a> () const =0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of channels available in radio. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7832acf422e9ae79fbf91af927ca9e44"></a><!-- doxytag: member="DeciderToPhyInterface::isRadioInRX" ref="a7832acf422e9ae79fbf91af927ca9e44" args="() const =0" -->
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00079.html#a7832acf422e9ae79fbf91af927ca9e44">isRadioInRX</a> () const =0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the true if the radio is in RX state. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00079.html#a7579990df34650e82125a1b91105ae15">getPhyHeaderLength</a> () const =0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the length of the phy header in bits.  <a href="#a7579990df34650e82125a1b91105ae15"></a><br/></td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>This class is the interface for a <a class="el" href="a00070.html" title="The basic Decider class.">Decider</a> to the <a class="el" href="a00029.html" title="The BasePhyLayer represents the physical layer of a nic.">BasePhyLayer</a>. </p>
<p>The <a class="el" href="a00070.html" title="The basic Decider class.">Decider</a> can do the following things using it:</p>
<ul>
<li>get the current simulation time</li>
<li>get the list of AirFrames that intersect with a specific time interval (to calculate SNR)</li>
<li>tell the <a class="el" href="a00029.html" title="The BasePhyLayer represents the physical layer of a nic.">BasePhyLayer</a> to hand an AirFrame up to the MACLayer</li>
<li>tell the <a class="el" href="a00029.html" title="The BasePhyLayer represents the physical layer of a nic.">BasePhyLayer</a> to send a control message to the MACLayer (to answer a ChannelSenseRequest) </li>
</ul>
</div><hr/><h2>Member Typedef Documentation</h2>
<a class="anchor" id="a13e15d0d80017e55821963b3b4a6cf55"></a><!-- doxytag: member="DeciderToPhyInterface::AirFrameVector" ref="a13e15d0d80017e55821963b3b4a6cf55" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef std::list&lt;airframe_ptr_t&gt; <a class="el" href="a00079.html#a13e15d0d80017e55821963b3b4a6cf55">DeciderToPhyInterface::AirFrameVector</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Type for container of AirFrames. </p>
<p>Used as out-value in "getChannelInfo" method. </p>

</div>
</div>
<hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="af85151048dba05ec27e378000fd95403"></a><!-- doxytag: member="DeciderToPhyInterface::cancelScheduledMessage" ref="af85151048dba05ec27e378000fd95403" args="(cMessage *msg)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void DeciderToPhyInterface::cancelScheduledMessage </td>
          <td>(</td>
          <td class="paramtype">cMessage *&#160;</td>
          <td class="paramname"><em>msg</em></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Tells the <a class="el" href="a00173.html" title="Provides initialisation for several AnalogueModels and Deciders from modules directory.">PhyLayer</a> to cancel a scheduled message (AirFrame or ControlMessage). </p>
<p>Used by the <a class="el" href="a00070.html" title="The basic Decider class.">Decider</a> if it doesn't need to handle an AirFrame or ControlMessage again anymore. </p>

<p>Implemented in <a class="el" href="a00029.html#aa4c75db0828cf579907b1e9a9c683e99">BasePhyLayer</a>.</p>

<p>Referenced by <a class="el" href="a00020.html#add7242168c4bb521c6335f3de590e4b0">BaseDecider::channelStateChanged()</a>.</p>

</div>
</div>
<a class="anchor" id="a1ee7d31b5bf0cda9e543ac91b3aaecc5"></a><!-- doxytag: member="DeciderToPhyInterface::drawCurrent" ref="a1ee7d31b5bf0cda9e543ac91b3aaecc5" args="(double amount, int activity)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void DeciderToPhyInterface::drawCurrent </td>
          <td>(</td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>amount</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>activity</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Enables the <a class="el" href="a00070.html" title="The basic Decider class.">Decider</a> to draw Power from the phy layers power accounts. </p>
<p>Does nothing if no Battery module in simulation is present. </p>

<p>Implemented in <a class="el" href="a00029.html#a81153199f268b4831f42b20b06959764">BasePhyLayer</a>, and <a class="el" href="a00174.html#aaaaec355a89dc49db47a3ca1e4ffaf90">PhyLayerBattery</a>.</p>

<p>Referenced by <a class="el" href="a00072.html#a6de7b8cd714e30cfdd2126c8b5c1ca59">Decider80211Battery::channelStateChanged()</a>.</p>

</div>
</div>
<a class="anchor" id="a304e09a4309820bc45450f8a5fcfcb34"></a><!-- doxytag: member="DeciderToPhyInterface::getChannelInfo" ref="a304e09a4309820bc45450f8a5fcfcb34" args="(simtime_t_cref from, simtime_t_cref to, AirFrameVector &amp;out) const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void DeciderToPhyInterface::getChannelInfo </td>
          <td>(</td>
          <td class="paramtype">simtime_t_cref&#160;</td>
          <td class="paramname"><em>from</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">simtime_t_cref&#160;</td>
          <td class="paramname"><em>to</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00079.html#a13e15d0d80017e55821963b3b4a6cf55">AirFrameVector</a> &amp;&#160;</td>
          <td class="paramname"><em>out</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Fills the passed AirFrameVector with all air frames that intersect with the time interval [from, to] with same channel number. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">from</td><td>The interval start time (included). </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">to</td><td>The interval end time (included). </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">out</td><td>The vector where the air frames shall be inserted. </td></tr>
  </table>
  </dd>
</dl>

<p>Implemented in <a class="el" href="a00029.html#af47d1c1771648303c64aa1da77cba2e4">BasePhyLayer</a>.</p>

<p>Referenced by <a class="el" href="a00020.html#a0310d4013043026404832008d40d48b9">BaseDecider::getChannelInfo()</a>.</p>

</div>
</div>
<a class="anchor" id="a7579990df34650e82125a1b91105ae15"></a><!-- doxytag: member="DeciderToPhyInterface::getPhyHeaderLength" ref="a7579990df34650e82125a1b91105ae15" args="() const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual long DeciderToPhyInterface::getPhyHeaderLength </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns the length of the phy header in bits. </p>
<p>If the decider should handle frame header retrieval he did needs the length of the phy header for calculation of next air frame handle time. </p>

<p>Implemented in <a class="el" href="a00029.html#acb8478eaf566b68e949e6d16cea0e22a">BasePhyLayer</a>.</p>

<p>Referenced by <a class="el" href="a00020.html#a5e45eb03d1a7f3653385181236714f21">BaseDecider::getNextSignalHandleTime()</a>.</p>

</div>
</div>
<a class="anchor" id="a2c55926187883df5bc322c947d317534"></a><!-- doxytag: member="DeciderToPhyInterface::getThermalNoise" ref="a2c55926187883df5bc322c947d317534" args="(simtime_t_cref from, simtime_t_cref to)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="a00058.html">ConstMapping</a>* DeciderToPhyInterface::getThermalNoise </td>
          <td>(</td>
          <td class="paramtype">simtime_t_cref&#160;</td>
          <td class="paramname"><em>from</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">simtime_t_cref&#160;</td>
          <td class="paramname"><em>to</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns a <a class="el" href="a00136.html" title="Represents a changeable mapping (mathematical function) from at least time to Argument::mapped_type.">Mapping</a> which defines the thermal noise in the passed time frame (in mW). </p>
<p>The implementing class of this method keeps ownership of the <a class="el" href="a00136.html" title="Represents a changeable mapping (mathematical function) from at least time to Argument::mapped_type.">Mapping</a>. </p>

<p>Implemented in <a class="el" href="a00029.html#a42664d512b88bedf58b5d21adc180984">BasePhyLayer</a>.</p>

<p>Referenced by <a class="el" href="a00020.html#a53eb943cea4604171a5c1cc4cdec4c20">BaseDecider::calculateRSSIMapping()</a>.</p>

</div>
</div>
<a class="anchor" id="a9183eb9c635a185f18da631f2d2d9f1c"></a><!-- doxytag: member="DeciderToPhyInterface::recordScalar" ref="a9183eb9c635a185f18da631f2d2d9f1c" args="(const char *name, double value, const char *unit=NULL)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void DeciderToPhyInterface::recordScalar </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>value</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>unit</em> = <code>NULL</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Utility method to enable a <a class="el" href="a00070.html" title="The basic Decider class.">Decider</a>, which isn't an OMNeT-module, to use the OMNeT-method 'recordScalar' with the help of and through its interface to <a class="el" href="a00029.html" title="The BasePhyLayer represents the physical layer of a nic.">BasePhyLayer</a>. </p>
<p>The method-signature is taken from OMNeTs 'ccomponent.h' but made pure virtual here. See the original method-description below:</p>
<p>Records a double into the scalar result file. </p>

<p>Implemented in <a class="el" href="a00029.html#a4be8fe4abf2c9705625f93114aa6d337">BasePhyLayer</a>.</p>

<p>Referenced by <a class="el" href="a00080.html#a2e918d4b8af6b850b52437f40eefc55a">DeciderUWBIRED::finish()</a>, and <a class="el" href="a00020.html#a3d59c0be545b6d7db1233c2bb256eb5d">BaseDecider::finish()</a>.</p>

</div>
</div>
<a class="anchor" id="a223fb24be9268abba32e90181fa248b9"></a><!-- doxytag: member="DeciderToPhyInterface::rescheduleMessage" ref="a223fb24be9268abba32e90181fa248b9" args="(cMessage *msg, simtime_t_cref t)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void DeciderToPhyInterface::rescheduleMessage </td>
          <td>(</td>
          <td class="paramtype">cMessage *&#160;</td>
          <td class="paramname"><em>msg</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">simtime_t_cref&#160;</td>
          <td class="paramname"><em>t</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Tells the <a class="el" href="a00173.html" title="Provides initialisation for several AnalogueModels and Deciders from modules directory.">PhyLayer</a> to reschedule a message (AirFrame or ControlMessage). </p>
<p>Used by the <a class="el" href="a00070.html" title="The basic Decider class.">Decider</a> if it has to handle an AirFrame or an control message earlier than it has returned to the <a class="el" href="a00173.html" title="Provides initialisation for several AnalogueModels and Deciders from modules directory.">PhyLayer</a> the last time the <a class="el" href="a00070.html" title="The basic Decider class.">Decider</a> handled that message. </p>

<p>Implemented in <a class="el" href="a00029.html#ac012473c1be0df5df5f901ad1a3e890e">BasePhyLayer</a>.</p>

<p>Referenced by <a class="el" href="a00020.html#add7242168c4bb521c6335f3de590e4b0">BaseDecider::channelStateChanged()</a>.</p>

</div>
</div>
<a class="anchor" id="a319e413b963f03ff218b0d0024fb66b9"></a><!-- doxytag: member="DeciderToPhyInterface::sendControlMsgToMac" ref="a319e413b963f03ff218b0d0024fb66b9" args="(cMessage *msg)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void DeciderToPhyInterface::sendControlMsgToMac </td>
          <td>(</td>
          <td class="paramtype">cMessage *&#160;</td>
          <td class="paramname"><em>msg</em></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Called by the <a class="el" href="a00070.html" title="The basic Decider class.">Decider</a> to send a control message to the MACLayer. </p>
<p>This function can be used to answer a ChannelSenseRequest to the MACLayer </p>

<p>Implemented in <a class="el" href="a00029.html#a76d0386516d18d1cc64af5ef6fb315cd">BasePhyLayer</a>.</p>

<p>Referenced by <a class="el" href="a00203.html#aa7e33361b328274b04ff7bd2d6206e6d">SNRThresholdDecider::answerCSR()</a>, <a class="el" href="a00020.html#ab8e925001d1f8630338c50f8ec10bb0d">BaseDecider::answerCSR()</a>, <a class="el" href="a00020.html#a6ff53fb85a926f2d6bdf8dd9164ee0c7">BaseDecider::processSignalEnd()</a>, <a class="el" href="a00074.html#a95c51ba6f01ba9055d0c91200d749d44">Decider802154Narrow::processSignalHeader()</a>, and <a class="el" href="a00080.html#abe90eb371a8c63e71b6e550c93994b75">DeciderUWBIRED::processSignalHeader()</a>.</p>

</div>
</div>
<a class="anchor" id="ad81919dcafb2d568303e9ed362dafd93"></a><!-- doxytag: member="DeciderToPhyInterface::sendUp" ref="ad81919dcafb2d568303e9ed362dafd93" args="(airframe_ptr_t packet, DeciderResult *result)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void DeciderToPhyInterface::sendUp </td>
          <td>(</td>
          <td class="paramtype">airframe_ptr_t&#160;</td>
          <td class="paramname"><em>packet</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00075.html">DeciderResult</a> *&#160;</td>
          <td class="paramname"><em>result</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Called to send an AirFrame with <a class="el" href="a00075.html" title="A class to represent the result of a processed packet (that is not noise) by the Decider.">DeciderResult</a> to the MACLayer. </p>
<p>When a packet is completely received and not noise, the <a class="el" href="a00070.html" title="The basic Decider class.">Decider</a> call this function to send the packet together with the corresponding <a class="el" href="a00075.html" title="A class to represent the result of a processed packet (that is not noise) by the Decider.">DeciderResult</a> up to MACLayer </p>

<p>Implemented in <a class="el" href="a00029.html#aa255e2b0181c204d4a8d06075967ef10">BasePhyLayer</a>.</p>

<p>Referenced by <a class="el" href="a00209.html#a6e559163ddd38ef6256b9faa67a46e63">ThresholdDecider::handleSignalOver()</a>, and <a class="el" href="a00020.html#a6ff53fb85a926f2d6bdf8dd9164ee0c7">BaseDecider::processSignalEnd()</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>D:/Projects/MiXiM/extsrc/mixim/src/base/phyLayer/<a class="el" href="a00292_source.html">DeciderToPhyInterface.h</a></li>
</ul>
</div>
</div>
  <div id="nav-path" class="navpath">
    <ul>
      <li class="navelem"><a class="el" href="a00079.html">DeciderToPhyInterface</a>      </li>

    <li class="footer">Generated on Tue Mar 5 2013 21:26:32 for MiXiM by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.5.1 </li>
   </ul>
 </div>


</body>
</html>
